package book_mianshizhinan.test1_3;

import java.util.Stack;

/**
 * ��ʹ�õݹ麯����ջ����һ��ջ
 * @author Frank
 *
 */
public class ReverseStack {

	public static void main(String[] args) {
		Stack stack = new Stack<Integer>();
		stack.push(1);
		stack.push(2);
		stack.push(3);
		reverse(stack);
		System.out.println(stack.toString());
	}
	
	public static void reverse(Stack<Integer> stack){
		if(stack.empty()){
			return;
		}
		int last = getAndRemoveTheLast(stack);
		reverse(stack);
		stack.push(last);
		
	}
	/**
	 * 1. ÿ�εݹ�Ĳ����stack���������Ķ��٣����ݹ�ĳ���Ҳ��stack��������Ϊ��
	 * 2. ����ݹ����з���ֵ�ģ��������Ҫ�����ҵ�����������������ֵ����ջ�գ����һ��Ԫ�ص�ֵ��
	 * @param stack
	 * @return
	 */
	static int getAndRemoveTheLast(Stack<Integer> stack){
		
		int result = stack.pop();
		if(stack.empty()){
			return result;
		}else{
			int last = getAndRemoveTheLast(stack);
			stack.push(result);
			return last;
		}
		
	
		
		
	}
}
